package com.demarc.pesquisas.negocio.entidade.pesquisa;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToOne;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.Type;
import org.joda.time.LocalDate;

import com.demarc.pesquisas.infraestrutura.hibernate.type.HibernateTypes;
import com.demarc.pesquisas.infraestrutura.persistencia.ObjetoPersistenteVersionado;
import com.demarc.pesquisas.negocio.entidade.entrevistador.Entrevistador;

@MappedSuperclass
public abstract class AbstractEntrevista<T extends Serializable> extends
		ObjetoPersistenteVersionado<T> {

	private Integer sequencial;
	private LocalDate data;
	private Entrevistador entrevistador;
	private String observacoes;

	public AbstractEntrevista() {
		this.entrevistador = new Entrevistador();
	}

	@Column(name = "etv_sequencial", nullable = false)
	@NotNull
	public Integer getSequencial() {
		return sequencial;
	}

	public void setSequencial(Integer sequencial) {
		this.sequencial = sequencial;
	}

	@NotNull
	@Column(name = "etv_data", nullable = false)
	@Type(type = HibernateTypes.JODA_LOCAL_DATE)
	public LocalDate getData() {
		return data;
	}

	public void setData(LocalDate data) {
		this.data = data;
	}

	@OneToOne
	@JoinColumn(name = Entrevistador.ID, nullable = false)
	@NotNull
	public Entrevistador getEntrevistador() {
		return entrevistador;
	}

	public void setEntrevistador(Entrevistador entrevistador) {
		this.entrevistador = entrevistador;
	}

	@Column(name = "etv_observacoes")
	public String getObservacoes() {
		return observacoes;
	}

	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}
}
